package com.dragonfly.shutter.validator;

import java.util.regex.Pattern;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

import com.dragonfly.shutter.DAOs.AdminDAO;
import com.dragonfly.shutter.beans.Admin;
import com.dragonfly.shutter.utils.MD5Util;
/**
 * 验证管理员是否登录成功
 * @author 赵洁琼
 *
 */
public class AdminLoginValidator implements Validator{
	private AdminDAO adminDAO;
	/**
	 * @param adminDAO the adminDAO to set
	 */
	public void setAdminDAO(AdminDAO adminDAO) {
		this.adminDAO = adminDAO;
	}
	/**
	 * 过滤验证器验证的类的类型
	 */
	@Override
	public boolean supports(Class clazz) {
		// TODO Auto-generated method stub
		return Admin.class.equals(clazz);
	}
	/**
	 * 过滤类中的字段,
	 * 包括邮箱的格式、输入密码的格式和长度,是否存在该管理员以及该帐户是否有管理员权限
	 */
	@Override
	public void validate(Object obj, Errors errors) {
		// TODO Auto-generated method stub
		Admin admin=(Admin)obj;
		//验证邮件地址为空
		ValidationUtils.rejectIfEmpty(errors, "adminEmail", "adminEmail.empty", "邮件地址不能为空");
		
		//验证密码为空
		ValidationUtils.rejectIfEmpty(errors, "adminPassword", "adminPassword.empty", "密码不能为空");
		
		//验证密码是否为8-12位字母、数字和下划线组合
		if(!Pattern.matches("^(\\w){8,12}$", admin.getAdminPassword()))
		{
			errors.rejectValue("adminPassword", "adminPassword.not_fit", "密码不符要求（8－12位字母、数字和下划线组合）");
		}
		
		//验证邮件地址是否符合规范
		if(!Pattern.matches("^[\\w][\\w\\-\\.]+@[\\w\\-]+(\\.[a-z]+){1,2}$", admin.getAdminEmail()))
		{
			errors.rejectValue("adminEmail", "adminEmail.not_standard", "邮件地址输入不符合规范");
		}
		
//		验证是否为管理员
//		if(adminDAO.selectAdminByEmailAndPassword(admin)== null){
//			errors.rejectValue("admin", "admin.not_exist", "输入的帐号并非管理员帐户");
//		}
		
		//为原始密码加密
		//String passwd = MD5Util.EncoderByMd5(admin.getAdminPassword().getBytes());
		//admin.setAdminPassword(passwd);
		
		//验证是否有成为管理员的权限
//		if(adminDAO.selectAdminByEmailAndPassword(admin) ==null || !adminDAO.selectAdminByEmailAndPassword(admin).getAdminPermission().equalsIgnoreCase("Yes")){
//			errors.rejectValue("adminPermission", "adminPermission.not_fit", "您未获得管理员权限，不能登录此页面！");
//		}
	}

}
